A macro is a set of commands that can be played back to perform a given task. Examples of these tasks include inserting a commonly used name and address into a word processor or executing a series of keystrokes to format a file. Tasks performed by macros are typically repetitive in nature allowing significant savings in time by executing the macro instead of manually repeating the commands.
Currently, different applications allow users to write macros and scripts within the confines of the allowed domain, i.e., within the confines of the specific application. For example, word processors typically allow users to create a macro by recording a series of keystrokes to be played back later. Other applications allow users to create macros for retrieving and manipulating data within the confines of the applications. Thus, these applications include a limited set of macros, e.g., macro for recording keystrokes, a macro for retrieving data. The user is then typically limited to the macros provided by the application.
Frequently, however, each user using an application has a unique set of instructions or commands that the user would like to include as a macro in the application which was not previously provided. Because the macros are typically hard coded into the applications or into the macro language included in the applications, the only method currently available for including additional macros into the application is to hard code the new macros into the application by modifying the source code and recompiling it before the new macro can be used. Usually, however, this presents a problem because the user is not given an access to the source code of the macro language or the application to modify. Moreover, it would be a tremendous burden on the application developers to try to cater to each individual user's preferences by customizing the applications to include the macros that the user would like to have.
Therefore, it is highly desirable to have an extensible macro language that would allow users to modify and to extend the language to include their preferences when using the macro language. Furthermore, it is also highly desirable to be able to allow the users to extend the macro without having to modify or access the source code of the macro language since the source code is treated as a proprietary property not distributed to the users.